import React from 'react'
import { Button } from 'antd';
import * as conf from './config';

class App extends React.Component{
  constructor(props){
    super(props);
  }

  //Add action
  add=()=>{
    conf.request({
      url:conf.api.crud.add,                  //接口地址
      data:{
        table:'test',                         //数据表
        repeat:{
          where:{name:'test第一条数据'}        //(可选)是否检测重复，true:默认根据data作为条件,否则根据设置的where条件
        },
        relation:{                            //(可选)关联数据
          table:'test',                       //关联的数据表
          where:{name:'test第一条数据'},       //关联条件
          name:'class'                        //(可选)关联后映射的字段名称/、默认为表名
        },
        data:{                                //添加的字段内容
          name:'test第一条数据',
          content:'test第一条内容'
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //AddMany
  addMany=()=>{
    conf.request({
      url:conf.api.crud.addMany,              //接口地址
      data:{
        table:'test',                         //数据表
        repeat:true,                          //{可选}检查重复
        data:[
          {name:'test第一条数据'},
          {name:'test第二条数据'},
          {name:'test第三条数据'},
          {name:'test第四条数据'}
        ]
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //update
  update=()=>{
    conf.request({
      url:conf.api.crud.update,               //接口地址
      data:{
        table:'test',                         //数据表
        repeat:true,                          //{可选}检查重复
        where:{                               //更新条件
          name:'test第一条数据'
        },
        relation:{                            //(可选)关联数据
          table:'test',                       //关联的数据表
          where:{
            name:'test第一条数据'              //关联条件
          },
          name:'class'                        //(可选)关联后映射的字段名称/、默认为表名
        },
        data:{                                //内容
          name:'test第20条数据'
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //updateMany
  updateMany=()=>{
    conf.request({
      url:conf.api.crud.updateMany,           //接口地址
      data:{
        table:'test',                         //数据表
        repeat:true,                          //{可选}检查重复
        data:[                                //Array
          {
            "_id" : "59b1004658c36929200d8f6c",
            "name" : "test第210条数据",
          }, {
            "_id" : "59b108a22a88502a8808e294",
            "name" : "test第二0条数据",
          }
        ]
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //create
  create=()=>{
    conf.request({
      url:conf.api.crud.create,               //接口地址
      data:{
        table:'test',                         //数据表
        where:{name:'test第210条数据'},        //where条件
        data:{
          name:'111111111111111111111',
          icon:'123',
          mobile:'',
          test:''
        }

      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //find
  find=()=>{
    conf.request({
      url:conf.api.crud.find,                 //接口地址
      data:{
        table:'test',                         //数据表
        field:'name',                         //(可选)筛选字段
        order:'createTime',                   //(可选)排序方式
        where:{name:'test第20条数据'}          //(可选)where条件
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //select
  select=()=>{
    conf.request({
      url:conf.api.crud.select,               //接口地址
      data:{
        table:'test',                         //数据表
        field:'name',                         //(可选)筛选字段
        order:'createTime',                   //(可选)排序方式
        distinct:'name',                      //(可选)去除重的字段
        where:{name:'test第20条数据'},         //(可选)where条件
        search:{                              //(可选)根据关键词模糊搜索
          field:'name',                       //字段
          value:'1'                           //关键字
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //list
  list=()=>{
    conf.request({
      url:conf.api.crud.list,                 //接口地址
      data:{
        table:'test',                         //数据表
        field:'name',                         //(可选)筛选字段
        order:'createTime',                   //(可选)排序方式
        where:{name:'test第20条数据'},         //(可选)where条件
        distinct:'name',                      //(可选)去除重的字段
        search:{                              //(可选)根据关键词模糊搜索
          field:'name',                       //字段
          value:'1'                           //关键字
        },
        pagination:{                          //分页
          currentPage:1,                      //当前页
          numsPerPage:2                       //每页数量
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //del
  del=()=>{
    conf.request({
      url:conf.api.crud.del,                 //接口地址
      data:{
        table:'test',                         //数据表
        where:{name:'test第20条数据'}         //(可选)where条件
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //delMany
  delMany=()=>{
    conf.request({
      url:conf.api.crud.delMany,              //接口地址
      data:{
        table:'test',                         //数据表
        _id:['59b121afe17509172c816aaa','59b121afe17509172c816aa8']
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //increment
  increment=()=>{
    conf.request({
      url:conf.api.crud.increment,            //接口地址
      data:{
        table:'test',                         //数据表
        where:{name:'test第二条数据'},         //(可选)where条件
        increment:{
          field:'number',                     //字段
          value:10                            //增加值
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //decrement
  decrement=()=>{
    conf.request({
      url:conf.api.crud.decrement,            //接口地址
      data:{
        table:'test',                         //数据表
        where:{name:'test第二条数据'},         //(可选)where条件
        decrement:{
          field:'number',                     //字段
          value:10                            //减少的字段值
        }
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //sum
  sum=()=>{
    conf.request({
      url:conf.api.crud.sum,                  //接口地址
      data:{
        table:'test',                         //数据表
        group:'name,createTime',              //(可选)分组
        // where:{name:'test第二条数据'},         //(可选)where条件
        field:'number'                        //求和字段
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //count
  count=()=>{
    conf.request({
      url:conf.api.crud.count,                  //接口地址
      data:{
        table:'test',                         //数据表
        where:{name:'test第二条数据'},         //(可选)where条件
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //avg
  avg=()=>{
    conf.request({
      url:conf.api.crud.avg,                  //接口地址
      data:{
        table:'test',                         //数据表
        // where:{name:'test第二条数据'},         //(可选)where条件
        field:'number'                        //求平均值的字段
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                    //检查错误
      }
    });
  };

  //findRepeat
  findRepeat=()=>{
    conf.request({
      url:conf.api.crud.findRepeat,                            //接口地址
      data:{
        table:'test',                                          //数据表
        uniqueIds:'$_id',                                      //返回的数据{_id:'$_id'}/'$_id'
        // where:{name:'test第二条数据'},                       //(可选)where条件
        field:{name:'$name',createTime:'$createTime'},         //唯一字段
        count:{$gt: 1}                                         //返回结果大于1的数据
      }
    }).then(result=>{
      if(result.errno === 0){
        console.log(conf.decrypted(result.data));
      }else{
        conf.tips(result);                                     //检查错误
      }
    });
  };

  render(){
    return(
      <div className="crud">
        <Button onClick={this.add}>add</Button>
        <Button onClick={this.addMany}>addMany</Button>
        <br/>
        <Button onClick={this.update}>update</Button>
        <Button onClick={this.updateMany}>updateMany</Button>
        <br/>
        <Button onClick={this.find}>find</Button>
        <Button onClick={this.select}>select</Button>
        <Button onClick={this.list}>list</Button>
        <br/>
        <Button onClick={this.del}>del</Button>
        <Button onClick={this.delMany}>delMany</Button>
        <br/>
        <Button onClick={this.create}>create</Button>
        <Button onClick={this.increment}>increment</Button>
        <Button onClick={this.decrement}>decrement</Button>
        <Button onClick={this.sum}>sum</Button>
        <Button onClick={this.count}>count</Button>
        <Button onClick={this.avg}>avg</Button>
        <br/>
        <Button onClick={this.findRepeat}>findRepeat</Button>
      </div>
    )
  }
}

export default App;


